Providing high-speed communication is increasingly valuable.
This invention relates to digital communications networks.
Digital communications networks consist of two or more installations of digital communications hardware connected together by some form of transmission medium. Some common transmission media are coaxial cable, fiber optics, phone lines, and radio.
Each installation connected to the network is known as a node. Communications consist of the transfer of digital data from one node to another. Usually, the communications hardware at a node is installed in a general purpose computer referred to as the host.
In order to separate actual data from control information related to routing and error detection, data in digital communications networks are organized as packets. A packet is a collection of data together with its associated control information, contained in a separate portion of the packet known as the packet header. A network design may require that all packets be of a fixed size, or may allow packets to take on a range of different sizes. In the latter case, the size of the packet must somehow be specified in the packet's control information, either by explicitly listing the size of the packet, or by including a unique data pattern to signal the end of a packet.
It is possible to design a network in which every node in the network is connected to every other node. Such networks are called fully connected networks. Because the number of connections in such a network rises as the square of the number of nodes, the cost of such a network is prohibitive, especially when the number of nodes is large. Fully connected networks are therefore almost never used.
Instead, networks are almost always partially connected. In order to communicate between two arbitrary nodes, data must often pass one or more intermediate nodes on its way to the destination. Destinations are designated by assigning to each node a unique node address, usually a number, which distinguishes that node from every other node in the network.
Packets must contain information related to their intended destinations in order to permit them to be properly routed through the network. Each packet may contain within it enough information to determine the packet's destination unambiguously.
An alternative routing method is to use a connection-oriented network protocol. In such a protocol, before any data can be transmitted from one node to another, a connection must be established between the two. Connections are established by transmitting special control packets between the two nodes. This connection is assigned a unique connection identifier, which is contained in the header of subsequent packets to be communicated between the two nodes. The connection identifier must be remembered by all intermediate nodes for the duration of the connection. Connection-based protocols allow packet headers to be smaller, but require complex procedures to recover from failures of intermediate nodes.
The list of connections between nodes is known as the topology of the network. The most common topologies are loops, stars, and bus or broadcast networks. In a loop topology, each node is connected to exactly two others. In a star network, every node has a single connection to a common central node. In a broadcast network, every node is connected to every other node through a single common connection or bus.
Broadcast networks have a unique difficulty associated with them. Because multiple transmitters are connected to the same transmitting medium, it is possible that more than one transmitter will attempt to transmit simultaneously. Such a condition is known as a collision. All broadcast networks must have mechanisms to detect and recover from collisions.
Loop-type networks commonly use a resource allocation method known as a token protocol in which a privileged data packet known as a token is circulated around the network. Only the node which currently possesses the token is allowed to transmit data. Complex procedures are necessary to keep the token circulating around the network, and to recover in the case where the token is lost due to a transmission error. This results in design complexity and inefficient use of network resources.
When connecting a very large number of nodes in a network it is common practice to separate the nodes into two or more separate groups. The nodes in each group are connected in the usual way. Each group thus connected is known as a subnetwork or subnet. Subnets are then connected to each other by means of a device called a subnetwork bridge or simply a bridge.
Bridges can be quite sophisticated in their design. For example, a bridge may discriminate between data packets whose routing requires crossing a subnet boundary and packets which do not, and transfer only those packets which require crossing the boundary. A bridge may even improve its performance over time by observing patterns of traffic across the subnet boundary and adjusting its actions accordingly.
The properties of state-of-the-art networks are fixed in their hardware designs. Thus, the only way to change a property of the network is to change the hardware. In addition, most networks implement some form of error detection and correction in hardware. Many networks implement routing in hardware. The design of such networks is brittle and very difficult and expensive to modify.
All the nodes of a digital communications network must adhere to some convention concerning the speed at which data is transmitted. Some network designs mandate a fixed clock rate. Networks which allow the rate of data transmission to be easily changed are called speed-scalable networks.
There is a need to provide a high-speed communication system which is usable in relation to many network topologies, and which is highly flexible in its operative characteristics.